/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package daos;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Query;

import negocio.NegocioDAO;
import negocio.NegocioException;
import seguranca.Interfaces.ICliente;
import entidades.Cliente;

/**
 *
 * @author renan
 */
public class ClienteDao extends NegocioDAO implements ICliente {

    private Cliente cliente;

    public ClienteDao() {
        cliente = new Cliente();
        
    }

    public void inserirCliente() throws NegocioException {
        if (buscaLogin()) {
            throw new NegocioException("Login já existente");
        }
        validar();
        EntityManager persistencia = NegocioDAO.getInstance().getEntityManager();
        persistencia.persist(cliente);
        persistencia.getTransaction().commit();
        persistencia.close();
    }

    public boolean buscaLogin() {
        

        return true;
    }

    public void validar() throws NegocioException {
        erros.limpar();


        if (estaVazio(cliente.getNome())) {
            erros.campoObrigatorio("nome");
        }

        if (estaVazio(cliente.getTelefone())) {
            erros.campoObrigatorio("telefone");
        }

        if (estaVazio(cliente.getCpf())) {
            erros.campoObrigatorio("cpf");
        }

        if(!valida_CpfCnpj(cliente.getCpf())){
            erros.campoInvalido("cpf");
        }

        

        if (estaVazio(cliente.getEmail())) {
            erros.campoObrigatorio("email");
        }

        if (!validaEmail(cliente.getEmail())) {
            erros.campoInvalido("email");
        }

        if (erros.existe()) {
            throw new NegocioException(erros);
        }
    }
    
    public void limpar(){
    	cliente.setCelular("");
    	cliente.setCpf("");
    	cliente.setEmail("");
    	cliente.setId("");
    	cliente.setLogin("");
    	cliente.setNome("");
    	cliente.setSenha("");
    	cliente.setTelefone("");
    }

    public Cliente getCliente() {
		return cliente;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

	public void alterarCliente(){
		throw new UnsupportedOperationException("Not yet supported");
	}
	
	@Override
    @SuppressWarnings("unchecked")
    public <T> List<T> getList(Class<T> classToCast, String jpql, Object... parameters) {
        List<T> toReturn = null;
        EntityManager em = getEntityManager();
        Query qr = em.createQuery(jpql);
        qr.setParameter("login", parameters[0]);
        toReturn = qr.getResultList();
        em.getTransaction().commit();
        em.close();
        return toReturn;
    }
   

    public void deletar() {
        throw new UnsupportedOperationException("Not yet supported");
    }
}
